<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script>
  var arr = [
    {
      id: 1,
      name: 'zhangsan',
      age: 19
    },
    {
      id: 2,
      name: 'lisi',
      age: 22
    },
    {
      id: 3,
      name: 'wangwu',
      age: 16
    },
    {
      id: 4,
      name: 'zhaoliu',
      age: 26
    },
    {
      id: 5,
      name: 'runtu',
      age: 13
    }
  ]
  // 需求1: 对arr进行循环遍历, 计算平均年龄
  let total=0
  arr.forEach((item)=>total+=item.age)
  console.log("平均年龄"+total/arr.length);//无返回值，不影响原数组

  // 需求2: 在arr的所有元素中, 将未成年人拎出来,形成一个新的数组
  let arr1=arr.filter(item=>item.age<18)
  console.log("未成年新数组为",arr1);//返回新数组，不影响原数组

  // 需求3: 将arr的所有元素的年龄拎出来,形成一个由数字形成的数组
    let arr2=arr.map(item=>item.age)
    console.log("仅年龄的新数组为",arr2);//返回新数组，不影响原数组

  // 需求4: 将arr中的区间[2, 4)元素拎出来, 形成一个新的数组
  let arr3=arr.filter((item,index)=>index>=2&&index<4)
  console.log("[2,4)间元素",arr3);//返回新数组，不影响原数组

  // 需求5: arr中哪个下标索引的年龄为26
  let index=arr.findIndex(item=>item.age==26)
  console.log("下标索引的年龄为26的元素索引为", index);//返回索引，不影响原数组

  // 需求6: arr有没有年龄为16的元素
  let res=arr.some(item=>item.age==16)
  console.log('年龄为16的元素'+res);//返回布尔值，不影响原数组


  // 需求7: 将arr中每一个元素的name属性取出来,形成一个新的字符串数组, 再将这个数组的每个元素使用-进行拼接形成字符串
  let str=arr.map(item=>item.name).join("-")
    console.log("仅name的新数组拼接成字符串为",str);//返回新数组，不影响原数组


  // 思考,上面所使用的所有方法调用结束之后, 有没有对arr产生影响? 

  </script>
</head>
<body>
  
</body>
</html>